<?php

namespace app\model;

use think\Model;
use app\traits\Cache;
use think\model\concern\SoftDelete;

class Activity extends Model
{
    use Cache;
    use SoftDelete;
    protected $deleteTime = 'delete_at';
    protected $defaultSoftDelete = null;
    /**
     * 关联的数据表。
     *
     * @var string
     */
    protected $table = 'activity';
    /**
     * 自动时间戳数据类型
     *
     * @var string
     */
    protected $autoWriteTimestamp = 'int';
    protected $createTime = 'create_at';
    protected $updateTime = 'update_at';
    /**
     * 属性默认值。
     *
     * @var array<int, string>
     */
    protected $attribute = [
        'title' => '',  // 标题
        'owner_id' => 0,  // 发起人
        'fee' => 0,  // 人均费用
        'cover' => 0,  // 封面
        'duration' => [],  // 时长
        'status' => 0, // 状态
        'age' => '',  // 年龄
        'dist_id' => '',  // 地区
        'mobile' => 0, // 手机号
        'people_number' => 0, // 人数
    ];
    /**
     * The attributes that are mass assignable.
     *
     * @var array<string>
     */
    protected $field = [
        'id', // ID
        'title',  // 标题
        'owner_id', //发起人
        'fee', // 人均费用
        'cover', // 封面
        'duration', // 时长
        'status', // 状态
        'age',  // 年龄
        'dist_id',  // 地区
        'mobile', // 手机号
        'people_number', // 人数
        'delete_at', // 删除时间
    ];

    protected $type = [
        'create_at' => 'timestamp:Y-m-d H:i:s',
        'update_at' => 'timestamp:Y-m-d H:i:s',
        'delete_at' => 'timestamp:Y-m-d H:i:s',
    ];
    /*
     * 新增前
     */
    public static function onBeforeInsert($model)
    {
        $model->owner_id = request()->uid;
    }   
    public function getCoverAttr($value)
    {
        if(strpos($value, 'http') === 0){
            return $value;
        }
        return request()->domain() . '/' . $value;
    }
    public function setCoverAttr($value)
    {
        return strrchr($value, 'upload/');
    }
    public function searchUserIdAttr($query, $value, $data)
    {
        $value > 0 && $query->where('owner_id', $value);
    }
    public function searchStatusAttr($query, $value, $data)
    {
        $value > 0 && $query->where('status', $value);
    }
    public function searchTitleAttr($query, $value, $data)
    {
        !empty($value) && $query->where('title', 'like', '&' . $value . '&');
    }
    /**
     * 发起人
     *
     * @return void
     */
    public function user() {
        return $this->belongsTo('User', 'id')->bind(['nickname']);
    }
    /**
     * 相册
     *
     * @return void
     */
    public function album() {
        return $this->hasMany('ActivityAlbum', 'activity_id')->order('serial');
    }
    /**
     * 指令
     *
     * @return void
     */
    public function detail() {
        return $this->hasOne('ActivityDetail', 'activity_id');
    }
    /**
     * 报名人员
     *
     * @return void
     */
    public function enrolls() {
        return $this->hasMany('ActivityEnroll', 'activity_id')->order('create_at', 'DESC');
    }
    /**
     * 工作人员
     *
     * @return void
     */
    public function workers() {
        return $this->hasMany('ActivityEnroll', 'activity_id')->order('create_at', 'DESC');
    }
}
